书写背景:之前基于GitHub和HEX出现访问很慢和图片无法显示,主要是国内很多时候访问GitHub速度会很慢,阅读博客的体验很不好,为了解决这个问题,我们可以将Hexo搭建到自己的服务器上,这样访问博客的速度就有了很大的提升!

# 一、环境

# 1.1 相关信息

电脑信息:M1芯片,MacOS Monterey 12.2.1

服务器信息:腾讯云轻量级服务器

系统信息:CentOS Linux release 7.9.2009 (Core)

# 二、服务端操作

# 2.1 安装git和nginx

yum install git nginx -y

image-20220325165731976

# 2.2 创建git用户

#创建git用户
useradd git
#设置git用户密码
passwd git

#给git用户配置sudo权限
chmod 740 /etc/sudoers
#修改/etc/sudoers文件
vim /etc/sudoers
# 找到root ALL=(ALL) ALL,在它下方加入一行
git ALL=(ALL) ALL

#修改sudoers文件权限
chmod 400 /etc/sudoers

image-20220325170420278

# 2.3 给git用户添加ssh密钥

#切换到git用户
su git
#创建目录
mkdir -p ~/.ssh
#创建文件
touch ~/.ssh/authorized_keys
#修改权限为读写
chmod 600 ~/.ssh/authorized_keys
#修改权限为读写执
chmod 700 ~/.ssh
#修改authorized_keys文件,将ssh密钥粘贴进去  在你电脑上找到git密钥
vim  ~/.ssh/authorized_keys

# 2.4 创建git仓库并使用git-hooks实现自动部署(git用户操作)

#创建git仓库目录
sudo mkdir -p /var/repo
#创建hexo目录
sudo mkdir -p /var/www/hexo
#切换到/var/repo目录
cd /var/repo/
#初始化一个名叫blog的仓库
sudo git init --bare blog.git
#增加一个post-update文件
sudo vim /var/repo/blog.git/hooks/post-update

post-update内容如下:

#!/bin/bash
git --work-tree=/var/www/hexo --git-dir=/var/repo/blog.git checkout -f

给post-update文件授权

#将/var/repo目录授权给git用户
sudo chown -R git:git /var/repo
#将/var/www/hexo目录授权给git用户
sudo chown -R git:git /var/www/hexo
#给post-update文件授予执行权限
sudo chmod +x /var/repo/blog.git/hooks/post-update

# 2.5 配置Nginx

#退出git用户
exit
#切换到/etc/nginx/conf.d/目录
cd /etc/nginx/conf.d/
#vim blog.conf 文件
vim blog.conf

blog.conf文件详细内容如下:

server {
    listen    80 default_server;
    listen    [::] default_server;
    server_name    blog.geekdive.com;
    root    /var/www/hexo;
}

检查Nginx语法并启动Nginx

#检查Nginx语法
nginx -t
#启动nginx
systemctl start nginx
#查看nginx状态
systemctl status nginx

image-20220325182650654

# 2.6 修改git用户的默认shell环境

修改/etc/passwd文件最后一行,将/bin/bash修改为/usr/bin/git-shell

 vim /etc/passwd

image-20220328101402615

# 三、本地配置(Mac)

# 3.1 安装git

#通过xcode安装git
xcode-select --install
#查看git版本
git --version
image-20220328103111426

# 3.2 安装Node.js和 Npm

下载对应安装包安装或者通过homebrew安装皆可。

image-20220328103403953

# 3.3 安装hexo及相关插件

sudo npm install hexo-cli hexo-server hexo-deployer-git -g

# 3.4 本地初始化博客站点

hexo init ~/blog
npm install hexo-deployer-git --save

# 3.5 本地hexo配置

# 修改Hexo的deploy配置
cd blog
vim _config.yml

# 找到deploy配置部分
# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
  type: git
  repo: root@xxx.xx.xxx.xxx:/var/repo/blog.git # IP填写自己服务器的IP即可
  branch: master

# 3.6 将本地Hexo代码部署到服务器

#清除缓存
hexo clean

#生成静态页面
hexo generate

#将本地静态页面目录部署到云服务器
hexo deploy

# 3.7 测试

输入域名或者服务器IP地址即可打开博客。

image-20220329153459372